package com.fandou.base.utils;

public class FdLog {
	private static boolean logOn = true;
	public static String SAVE_TAG = "save";
	
	/**
	 * 是否打开log
	 * */
	public static void setLogOn(boolean isLogOn) {
		logOn = isLogOn;
	}
	
	//Error//////////////////////////////////////////////////////////////////////////
	/**
	 * Error Log
	 * */
	public static void e(String tag, String msg){
		e(tag, msg, false);
	}
	
	/**
	 * Error Log
	 * @param isSave 是否要保存log
	 * */
	public static void e(String tag, String msg, boolean isSave){
		e(tag, msg, null, isSave);
	}
	
	/**
	 * Error Log
	 * */
	public static void e(String tag, String msg, Throwable tr){
		e(tag, msg, tr, false);
	}
	
	/**
	 * Error Log
	 * @param isSave 是否要保存log
	 * */
	public static void e(String tag, String msg, Throwable tr, boolean isSave){
		if (logOn) {
			if (tr == null) {
				android.util.Log.e(tag, msg);
			} else {
				android.util.Log.e(tag, msg, tr);
			}
			if (isSave) {
				writeSavePath("e", tag, msg);
			}
		}
	}
	
	//Info///////////////////////////////////////////////////////////////////////////
	/**
	 * Info Log
	 * */
	public static void i(String tag, String msg){
		i(tag, msg, false);
	}
	
	/**
	 * Info Log
	 * @param isSave 是否要保存log
	 * */
	public static void i(String tag, String msg, boolean isSave){
		i(tag, msg, null, isSave);
	}
	
	/**
	 * Info Log
	 * */
	public static void i(String tag, String msg, Throwable tr){
		i(tag, msg, tr, false);
	}
	
	/**
	 * Info Log
	 * @param isSave 是否要保存log
	 * */
	public static void i(String tag, String msg, Throwable tr, boolean isSave){
		if (logOn) {
			if (tr == null) {
				android.util.Log.i(tag, msg);
			} else {
				android.util.Log.i(tag, msg, tr);
			}
			if (isSave) {
				writeSavePath("i", tag, msg);
			}
		}
	}
	
	//Debug//////////////////////////////////////////////////////////////////////////
	/**
	 * Debug Log
	 * */
	public static void d(String tag, String msg){
		d(tag, msg, false);
	}
	
	/**
	 * Debug Log
	 * @param isSave 是否要保存log
	 * */
	public static void d(String tag, String msg, boolean isSave){
		d(tag, msg, null, isSave);
	}
	
	/**
	 * Debug Log
	 * */
	public static void d(String tag, String msg, Throwable tr){
		d(tag, msg, tr, false);
	}
	
	/**
	 * Debug Log
	 * @param isSave 是否要保存log
	 * */
	public static void d(String tag, String msg, Throwable tr, boolean isSave){
		if (logOn) {
			if (tr == null) {
				android.util.Log.d(tag, msg);
			} else {
				android.util.Log.d(tag, msg, tr);
			}
			if (isSave) {
				writeSavePath("d", tag, msg);
			}
		}
	}
	//Verbose////////////////////////////////////////////////////////////////////////
	/**
	 * Verbose Log
	 * */
	public static void v(String tag, String msg){
		v(tag, msg, false);
	}
	
	/**
	 * Verbose Log
	 * @param isSave 是否要保存log
	 * */
	public static void v(String tag, String msg, boolean isSave){
		v(tag, msg, null, isSave);
	}
	
	/**
	 * Verbose Log
	 * */
	public static void v(String tag, String msg, Throwable tr){
		v(tag, msg, tr, false);
	}
	
	/**
	 * Verbose Log
	 * @param isSave 是否要保存log
	 * */
	public static void v(String tag, String msg, Throwable tr, boolean isSave){
		if (logOn) {
			if (tr == null) {
				android.util.Log.v(tag, msg);
			} else {
				android.util.Log.v(tag, msg, tr);
			}
			if (isSave) {
				writeSavePath("v", tag, msg);
			}
		}
	}
	//Warn///////////////////////////////////////////////////////////////////////////
	/**
	 * Warn Log
	 * */
	public static void w(String tag, String msg){
		w(tag, msg, false);
	}
	
	/**
	 * Warn Log
	 * @param isSave 是否要保存log
	 * */
	public static void w(String tag, String msg, boolean isSave){
		w(tag, msg, null, isSave);
	}
	
	/**
	 * Warn Log
	 * */
	public static void w(String tag, String msg, Throwable tr){
		w(tag, msg, tr, false);
	}
	
	/**
	 * Warn Log
	 * @param isSave 是否要保存log
	 * */
	public static void w(String tag, String msg, Throwable tr, boolean isSave){
		if (logOn) {
			if (tr == null) {
				android.util.Log.w(tag, msg);
			} else {
				android.util.Log.w(tag, msg, tr);
			}
			if (isSave) {
				writeSavePath("w", tag, msg);
			}
		}
	}
	///IO //////////////////////////////////////////

	private static synchronized void writeSavePath(String level, String tag, String msg) {
//		String logMsg = TimeUtils.getCurrentTime() + ": " + level + " Tag = " + tag + ", Msg = " + msg + "\r\n";
//		logList.add(logMsg);
//		if (logList.size() >= 10) {
//			String log = "";
//			int size = logList.size();
//			for (int i = 0; i < size; i++) {
//				log += logList.get(i);
//			}
//			logList.clear();
//			myFileOpt.myWriteSDFile(logSavePath, log, true);
//			android.util.Log.e("LogSave", "LogSave");
//		}
	}
}
